/*
 * Copyright 2008 Pretty-Tools.com
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/**
 * Logger
 */
function yrprxLogger(prefix)
{
    this.logger = null; 
    this.enabled = false; //by default

    try
    {
        this.logger = yrprxComponentsFactory.createInstance("XPCOMAdapter.Logger.1");
        this.logger.init(prefix ? new String(prefix) : "");
        this.enabled = this.logger.isEnabled;
    }
    catch(ex)
    {
    }
}

yrprxLogger.prototype.exceptionToString = function(ex)
{
    if (!ex)
        return "";

    return "Exception: " + (!ex.message ? ex : ex.message);
}

yrprxLogger.prototype.debug = function(message, e)
{
    if (!this.enabled)
        return;

    try
    {
        if (this.logger) this.logger.debug(message + this.exceptionToString(e));
    }
    catch(ex)
    {
    }
}

yrprxLogger.prototype.warn = function(message, e)
{
    if (!this.enabled)
        return;

    try
    {
        if (this.logger) this.logger.warn(message + this.exceptionToString(e));
    }
    catch(ex)
    {
    }
}

yrprxLogger.prototype.error = function(message, e)
{
    if (!this.enabled)
        return;

    try
    {
        //alert in debug mode
        //alert(message + this.exceptionToString(e));

        if (this.logger) this.logger.error(message + this.exceptionToString(e));
    }
    catch(ex)
    {
    }
}

yrprxLogger.prototype.dumpProperties = function(message)
{
    if (!this.enabled)
        return;

    try
    {
        if (this.logger) this.logger.dumpProperties(message);
    }
    catch(ex)
    {
    }
}
